# -*-coding utf-8 -*-

__project__ = 'le-bo16'
__file_name__ = 'class7'
__author__ = 'hqDu'
__time__ = '2020-11-11 22:32'
__product_name = 'PyCharm'
# @fileName :class7.py

'''
不可变数据类型：int string bool 元组
可变数据类型：列表、字典、集合（set）

# 键盘输入5个学生
'''

# set
# 集合是可变数据类型
# 集合中的元素必须是不可变数据类型
# 集合是无序的，所以下标不可以用。（字典也是）
# 集合中的元素不可以重复，可以用作去重处理。

my_set = {1, 2, 3, 4}
my_set1 = {}
print(type(my_set1))  # 空集合

# 列表去重
my_list = [1, 3, 5, 5, 7, 7, 8]
my_set = set(my_list)
print(my_set)
# 集合转列表
my_list = list(my_set)

my_set = {1, 3, [1, 1], 7}  # 不对，存在可变列表
my_set = {1, 3, (1, 1),7}  # 对，元组是不可变数据类型

# 增删改查

# 删
my_set.remove((1, 1))  # 删除不存在的元素会报错
print(my_set)

my_set.pop()  # 在集合中，随机删除；在列表中，删除最后一个
print(my_set)

my_set.discard(9)  # 删除不存在的元素不会报错

del my_set  # 直接删除整个变量
print(my_set)  # 此时，会报错

# 增
my_set.add(9)  # 随机增加
print(my_set)

my_set.update(9)  # 报错
print(my_set)

my_set.update('9')  # 增加与列表的attend类似
print(my_set)

my_set.update('9165')  #
print(my_set)

# 交集
my_set = {1, 3, 4, 5, 6}
my_set1 = {2, 1, 3, 4, 5, 6}
new_set = my_set & my_set1

# 并集
new_set = my_set | my_set1

# 两个集合之间不能进行 + 操作

print('=' * 100)  # 打印100个=


# 多维元组列表进行操作，取22
# 列表中存在3个元素，取第3个元素；
# 第三个元素里面有两个元素，取第一个元素
# 第一个元素是字典，由键取值
# 值有3个，取第2个
my_list = [(1, 3), (2, 4), ({'name':[1, 22, 44]},99)]
print(my_list[2][0]['name'][1])



# 变量  已完成
# 函数，由很多变量组成；提高效率，减少代码冗余
# 类，由很多函数组成
# 模块，由很多类组成
# 包，由很多的模块组成
# 项目，由很多包组成

# 函数定义
def my_function():
	"""
		默认会有返回
	"""

	print("asdaksdjasjdsak")


# 调用，函数定义与调用之间要空两行
my_function()

#查看函数文档说明，就是函数注释
help(my_function())

# 参数
# 函数定义时添加参数，形参，没有实际意义
def my_fun(a, b):
	res = a + b
	print(res)


my_fun(1, 2)  # 实参
# 关键字参数，可以参数互换位置
my_fun(b=1, a=2)